Since the advent of computers there have been a variety of operating systems, each requiring its own software which is generally not compatible with other manufacturer's operating systems, and within a particular operating system, different releases may be provided which allow operation on different central processor units (CPU) and interface device types that create incompatibilities. Some manufacturers such as Apple Computer established their own proprietary operating system. Other manufacturers utilized operating systems such as Microsoft® DOS, Microsoft Windows®, Unix, and Linux, which are capable of operation on a variety of manufacturer's CPU products. Using each of these operating systems from a single user point of access requires communication between the various operating systems and releases, which has long been a challenge in the computer industry. In particular, communicating between the Windows operating systems (Windows computers) and Unix and Linux operating systems (which inherently provides an X-windows interface layer for local and remote connections) has not been simple.
Typical art client-server systems communicate by following a protocol whereby a program may be operative on the server, and the client provides a stream of request data and receives a stream of response data. A typical example is an HTTP server, which receives HTTP request commands, and delivers responses in the form of HTML formatted pages. Another type of client-server system is a remote window system, which imitates the behavior a user would see if running the program on the host computer by using a hardware abstraction layer which synthesizes the behavior of input mouse movements and keyboard strokes as well as synthesizing the behavior of the server display and presenting the pixels from the display abstraction layer to the client display. In this manner, the remote window interface provides an extension of the keyboard and mouse inputs and an extension of the display output. A popular remote window system is the X Window System, also known as X11, or X-Windows, which was developed at the Massachusetts Institute of Technology (MIT) in 1984. X-windows was designed to be used over network connections, and provides a standard open protocol for client server communications that is platform independent. A platform independent approach is desirable to provide a large number of applications which may be present on a small number of application servers to a large number of user clients who may operate on a wide variety of operating systems and client devices.
In the 1980's a communication interface was created to allow a user of a Windows computer to connect to an X-windows System computer and establish an X-window interface on a Microsoft Windows computer where a user can display and manage X-windows applications. The type of software that is loaded onto the computer with the Windows operating system is known as ‘PC X Server’ software, after which X-windows systems communications with other X-windows interfaces is possible. One requirement of the X-windows software is a persistent remote connection with the client. However, if for any reason that persistent connection is severed, the X-windows session in use is abruptly closed, as no mechanism exists to recover the previous state or resume the lost connection. For many years this technology did not change significantly. In the early 2000's a new communication protocol (not based on the X-windows System) was created that would keep the X-windows application running on the X-windows host system if the connection with the user's workstation was severed for any reason. In order for this to occur, software is required to be installed on both the user's Windows computer and the remote X-windows Systems computer. This client/server type solution is known as “VNC” for “Virtual Network Computing” and it quickly became very popular, particularly in certain industries that worked on complex simulations taking a long time to complete, such as timing simulations, functional simulations, or routing of complex integrated circuits common to the semiconductor industry. Client/Server applications such as VNC have the distinct advantage that the connection can be broken and restored without the termination of the simulation or other application, thereby saving many hours of work.
There are several disadvantages of each of these prior art approaches. While each of the prior art solutions allows for connections between a user's computer to an X-windows host over an Internet connection, these connections have traditionally been a direct connection from the end user's computer to the application host or by way of a connection server which in turn connects to the application host. Additionally, it is required to acquire and perform an installation of the required software. Further, the selection of an X-windows application requires the connecting user be aware of the available alternate X-windows servers which also host the requested application without the ability to know system load levels which is essential for selecting a host which can provide the best performance. Additionally, it is required for the user to have the required X-windows interface software installed on the particular user device. Furthermore, the user may not have sufficient privileges to install in certain locations, such as managed computers, nor control the level of security to compensate for the reduced level of security inherent in the client connection. It is therefore desired to provide an apparatus and method for connecting to and managing remote X-windows System applications using a web browser. It is further desired for the browser to provide status and update information as the remote application progresses, and for the browser connection to be periodically suspended and re-connected, such as is typical for mobile computing. Additionally, it is desired for the security of the connection to be optimized according to metrics derived from the application server and browser.